#ifndef __SX1268_H__
#define __SX1268_H__

#include <stdbool.h>
#include <stdint.h>
#include "main.h"

// LoRa串口发送/接收缓冲区大小
#define SX1268_UART_TX_BUFFER_SIZE 1024
#define SX1268_UART_RX_BUFFER_SIZE 1024

// 休眠时间
typedef enum
{
    SX1268_NODE_TO_NODE = 0,    // 点对点
    SX1268_NODE_TO_GATEWAY = 1, // 点对基站
} SX1268_NET_MODE;

typedef enum
{
    SX1268_RIQ_NO_REVERSE = 0, // 载波不反转
    SX1268_RIQ_REVERSE = 1,    // 载波反转
} SX1268_RIQ_MODE;

// 初始化LoRa模块
void SX1268_Init(void);

// LoRa进入配置模式
void SX1268_ConfigMode(void);

// LoRa进入通信模式
void SX1268_CommunicationMode(void);

// 发送AT指令
uint8_t *SX1268_SendAtCMD(const char *cmd, uint32_t timeout);

// 透明传输模式下：发送数据
void SX1268_SendData(const uint8_t *data);

// 透明传输模式下：接收数据
uint8_t *SX1268_UART_Receive(void);

// AT测试
void SX1268_ATTest(void);

// 配置点对点模式
void SX1268_ConfigNetMode(SX1268_NET_MODE mode);

// 退出配置模式进入通信模式
void SX1268_ConfigATT(void);

// 设置发送频率410-525M
void SX1268_ConfigTFreq(float tFreq);

// 设置接收频率410-525M
void SX1268_ConfigRFreq(float rFreq);

// 设置载波反转
void SX1268_ConfigRiq(SX1268_RIQ_MODE riqMode);

// 显示所有配置信息
void SX1268_ConfigCfgInfo(void);

#endif // __SX1268_H__
